import { Injectable  } from '@angular/core';
import { Platform } from 'ionic-angular';
import { UtilsService } from './utils.service';
import { HttpsService } from "./http.service";

import { AppConfig } from '../app/app.config';
// 引入微信服务
declare var Wechat:any;
@Injectable()

export class WechatService {
    private platform:Platform;
    private utils:UtilsService; 

    constructor(private http:HttpsService) {
    };

  //文档地址: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN
  wechatLogin() {
    Wechat.isInstalled(isInstalled => {
      if (!isInstalled) {
        if (this.platform.is('ios')) {
        //对于iOS应用，考虑到iOS应用商店审核指南中的相关规定，建议开发者接入微信登录时，先检测用户手机是否已安装微信客户端（使用sdk中isWXAppInstalled函数 ），对未安装的用户隐藏微信登录按钮，只提供其他登录方式（比如手机号注册登录、游客登录等）。
          // this.bs.launchOutter('https://itunes.apple.com/cn/app/%E5%BE%AE%E4%BF%A1/id414478124?mt=8');
        }
        else if (this.platform.is('android')) {
            //对于Android应用，建议总是显示微信登录按钮，当用户手机没有安装微信客户端时，请引导用户下载安装微信客户端。
            window.open('https://weixin.qq.com/cgi-bin/readtemplate?uin=&stype=&promote=&fr=&lang=zh_CN&ADTAG=&check=false&t=weixin_download_method&sys=android&loc=weixin,android,web,0');
        }
        else {
          this.utils.showLoading('请先安装微信客户端');
        }
        // alert("Wechat installed: " + (isInstalled ? "Yes" : "No"));
      } else {
        console.log("wechat login.....")
        let loader = this.utils.showLoading('跳转微信登录中...')
        try {
          var scope = "snsapi_userinfo";//snsapi_userinfo
          var state = "_" + (+new Date());
         //跳转到微信
          Wechat.auth(scope, state, (res) => {
            /**
             *  1.用户点击授权后，微信客户端会被拉起，跳转至授权界面，用户在该界面点击允许或取消, 获取code 以下是返回参数
             * 
             *  ErrCode：ERR_OK = 0(用户同意) ERR_AUTH_DENIED = -4（用户拒绝授权） ERR_USER_CANCEL = -2（用户取消）
             * 
             *  code：用户换取access_token的code，仅在ErrCode为0时有效
             *  state：第三方程序发送时用来标识其请求的唯一性的标志，由第三方程序调用sendReq时传入，由微信终端回传，state字符串长度不能超过1K
             *  lang：微信客户端当前语言
             *  country：微信用户当前国家信息
             */
            console.log(JSON.stringify(res))
            /**
             * 2.获取code后， 请求以下链接获取access_token，
             * 注意:建议将Appsecret、用户数据（如access_token）放在App云端服务器，由云端中转接口调用请求。即将code发送给给后端，由后端请求获取access_token， openid等数据， 
             * 
             * 3.请求用户信息（由后端请求， 将用户信息传到前端），前端获取用户信息，保存登录。
             *   注意： 开发者最好保存unionID信息（请求用户信息后，获取的数据），以便以后在不同应用之间进行用户信息互通
             * 
             *    http请求方式: GET
             *    https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
             */

            // let loader = this.utils.showLoading("");
            // this.http.get(url, res.code, (data)=>{
              // AppConfig.globalData.userInfo = data;
            // })

            


            //均有后端处理，前端不操作, 详情可查看如下方法
            //  this.backEndOpera(res);
          }, (reason) => {
            console.log(reason);
          });
        } catch (error) {
          console.log("error===" + error);
        } finally {
          this.utils.hideLoading(loader);
        }
      } 
    })
  }


  //分享到微信好友
  shareWxSession(data:any){
    let wechat = (<any>window).Wechat;
    // wechat.isInstalled(function (installed) {
    //   if(!installed){
    //     //  this.toastService.show('您没有安装微信！');
    //     return ;
    //   }
    // }, function (reason) {
    //     //  this.toastService.show("Failed: " + reason);
    // });
    console.log('Start Wachat Share.....')
    Wechat.share({
            message: {
                title: data.shareTit,
                description: data.shareDesc,
                thumb: data.shareImg,
                media: {
                    type: Wechat.Type.LINK,
                    webpageUrl: data.shareUrl
                }
            },
            scene: Wechat.Scene.SESSION   // share to SESSION
        }, function () {
            // this.toastService.show('分享成功');
            console.log('分享成功')
        }, function (reason) {
            console.log("Failed: " + reason);
        }
    );
    }

    //分享到微信朋友圈
    shareWxTimeLine(data:any){
        let wechat = (<any>window).Wechat;
        wechat.isInstalled(function (installed) {
          if(!installed){
            // this.toastService.show('您没有安装微信！');
            return ;
          }
        }, function (reason) {
            // this.toastService.show("Failed: " + reason);
        });
        wechat.share({
            message: {
                title: data.shareImg,
                description: data.shareDesc,
                thumb: data.shareImg,
                media: {
                    type: wechat.Type.LINK,
                    webpageUrl: data.shareUrl
                }
            },
            scene: wechat.Scene.TIMELINE   // share to Timeline
        }, function () {
        this.toastService.show('分享成功','bottom',4000);
        }, function (reason) {
            console.log("Failed: " + reason);
        });
    }

    //均有后端处理，前端不操作
    backEndOpera(res:any) {
      let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppConfig.APPID + "&secret=" + AppConfig.APPSECRET + "&code=" + res.code + "&grant_type=authorization_code";
      this.http.get(url, null, (res)=>{
        console.log("openid===="+res.openid+", access_token=="+res.access_token);
        //获取用户信息
        // this.getUserInfo(res);
      }, (err)=>{
        console.log("err==="+JSON.stringify(err));
      })
    }
}